package com.wgy.day35函数式接口和Lambda.使用lambda作为方法的参数和返回值;

/*
java.lang.Runnable:就是一个函数式接口,有且仅有一个抽象方法run
假设有一个startThread 方法使用该接口作为参数,那么久可以使用Lambda进行传参
这种情况其实和Thread类的构造方法参数为Runnable没有本质区别
 */
public class Demo01Runnable {
    public static void main(String[] args) {
        //调用startThread方法,方法的参数是一个接口,可以传递接口的匿名内部类
        startThread(new Runnable() {
            @Override
            public void run() {
                System.out.println(Thread.currentThread().getName() + "-->" + "线程启动了");
            }
        });

        //调用startThread方法,方法的参数是一个函数式接口,可以传递Lambda表达式
        startThread(() -> {
            System.out.println(Thread.currentThread().getName() + "-->" + "线程启动了");
        });

        //调用startThread方法,方法的参数是一个函数式接口,可以传递Lambda表达式的省略形式
        startThread(() -> System.out.println(Thread.currentThread().getName() + "-->" + "线程启动了"));

    }

    public static void startThread(Runnable run) {
        //开启多线程
        new Thread(run).start();
    }
}
